import axios from 'axios'
import { Message } from 'element-ui'
import store from '@/store'
import{getTimeStamp}from '@/utils/auth'
import router from '@/router'
// 设置token 的有效时间
const TimeOut=14000010000000000000000000000000
const service = axios.create({
    // 设置开发环境下axios的请求基础地址
    baseURL:process.env.VUE_APP_BASE_API,
    timeout:5000  //设置超时时间
})
// 请求拦截器，提供用户的配置信息
service.interceptors.request.use(config=>{
    // 用户提供的请求信息发送token
    // 注入Token
    if(store.getters.token){
        if(isCheckTimeOut()){
            // 如果超时了
            // 做退出登录操作
            store.dispatch('user/logout')
           // 跳转登录页面
           router.push('/login')
            return Promise.reject(new Error('token超时了'))
        }
        config.headers['Authorization']=`Bearer ${store.getters.token}`
        // config.headers.Authorization = `Bearer ${store.getters.token}`
    }
    // 一定要返回config
    return config
},error=>{
    Message.error(error.message)
    return  Promise.reject(error)
})

// 响应拦截器
service.interceptors.response.use(response=>{
    // 如果响应成功拿到了数据,对axios默认加的data进行解构
    const{success,message,data}= response.data
    if(success){
        return data
    }else{

        // 响应内容/业务已经错了，不能进then 进catch
        Message.error(message)  //提示错误消息
        return Promise.reject(new Error(message))
    }
   
},error=>{
// 如果响应失败
Message.error(error.message)
return Promise.reject(error)
})
// 是否超时
function isCheckTimeOut(){
    var currentTime=Date.now() //当前时间
    var timeStamp=getTimeStamp()  //获取时间戳时间
    return (currentTime-timeStamp)/1000 >TimeOut
}
export default service
